from django.contrib import admin
from django.urls import path, include


# path 函数是 django.urls.conf._path 函数的偏函数，它有两个位置参数
# 第一个是 route 字符串，路径片段
# 第二个有两种情况：1. 元组或列表；2. 可调用对象（视图函数或视图类）
# path 函数的返回值根据第二个位置参数来定：
# 1. 返回值是 django.urls.resolvers.URLResolver 类的实例，叫做「路由处理对象」
# 2. 返回值是 django.ruls.resolvers.URLPattern 类的实例，叫做「路由模式对象」

# 下面的列表中的 path 函数的返回值都是「路由处理对象」
urlpatterns = [
    # admin.site.urls 是一个三元元组
    # 它是 django.contrib.admin.sites.AdminSite.urls 方法的返回值
    # 元组的第一个参数是列表，列表中的元素有两种情况：
    # 一种是「路由模式对象」，即 URLPattern 类的实例
    # 另一种是「路由处理对象」，即 URLResolver 类的实例
    path('admin/', admin.site.urls),
    # 此处 include 函数返回一个三元元组，其中第一个元素是参数指向的模块对象
    path('', include('home.urls')),
    path('', include('authentication.urls')),
    path('', include('user_profile.urls')),
    path('', include('questions.urls')),
    path('', include('search.urls')),
]
